﻿#pragma once

#if defined(_MSC_VER)
//#pragma execution_character_set("utf-8")

// 使用 C 标准库函数时禁用安全警告
#define _CRT_SECURE_NO_WARNINGS
#endif

//#include <stdio.h>
#include <iostream>		// 输入输出流头文件
#include <algorithm>	// 算法头文件
#include <functional>	// 泛型函数头文件
#include <memory>		// 动态内存管理头文件
#include <thread>       // 线程头文件
#include <mutex>		// 互斥锁头文件
#include <utility>      // 通用工具头文件
#include <chrono>		// 日期和时间头文件
#include <fstream>		// 文件输入输出头文件
#include <sstream>		// 字符串流头文件
#include <iomanip>		// 格式化头文件
#include <ios>			// 基本输入输出头文件
#include <iosfwd>		// 前向声明头文件
#include <istream>		// 输入流头文件
#include <ostream>		// 输出流头文件
#include <streambuf>	// 流缓冲区头文件

// 数据结构
#include <string>			// 字符串头文件
#include <bitset>			// 位集头文件
#include <complex>			// 复数头文件
#include <valarray>			// 值数组头文件
#include <array>			// 固定大小数组头文件
#include <vector>			// 动态数组头文件
#include <list>				// 双向链表头文件
#include <deque>			// 双端队列头文件
#include <queue>			// 队列头文件
#include <stack>			// 栈头文件
#include <set>				// 集合头文件
#include <map>				// 映射头文件
#include <unordered_map>	// 哈希映射头文件
#include <unordered_set>	// 哈希集合头文件

// windows API
#include <windows.h>

// 其他 C++ 库(主要是兼容 C 库)
#include <cmath>			// 数学函数头文件
#include <cstdlib>			// 标准库头文件
#include <ctime>			// 时间头文件
#include <cassert>			// 断言头文件
#include <cctype>			// 字符类型头文件
#include <cstdio>			// 输入输出头文件
#include <climits>			// 整型限制头文件
#include <cstring>			// 字符串头文件
#include <cwchar>			// 宽字符类型头文件
#include <cfloat>			// 浮点数限制头文件
#include <cerrno>			// 错误号头文件
#include <cfenv>			// 浮点异常头文件
#include <cstdarg>			// 可变参数头文件
#include <cstddef>			// 标准定义头文件
#include <cstdint>			// 整数类型头文件
#include <cinttypes>		// 整型格式化头文件
#include <clocale>			// 区域设置头文件
#include <csignal>			// 信号头文件
#include <csetjmp>			// 跳转头文件
#include <cstdalign>		// 内存对齐头文件


// 宏定义
#define print_start(str) std::cout << " ----------------- " << str << " Start ------------------------\n";
#define print_end(str) std::cout << " ----------------- " << str << " End ------------------------\n\n\n";